﻿using BrettM.SimpleDemo.WebApp.Models;

namespace BrettM.SimpleDemo.WebApp.Store
{
    /// <summary>
    /// The methods responsible for 
    /// </summary>
    public interface ISimpleDemoStore
    {
        /// <summary>
        /// Queries the store and returns a list of all customers.
        /// </summary>
        /// <returns>
        /// A list of customers in a CustomerList (List<Customer>)</Customer>
        /// </returns>
        CustomerList GetCustomers();

        /// <summary>
        /// Queries the store for a single customer based on the code (case sensative).
        /// </summary>
        /// <param name="code">The customer code.</param>
        /// <returns>A valid Customer if found, otherwise null.</returns>
        Customer GetCustomer(string code);

        /// <summary>
        /// Updates a customer with new details.
        /// </summary>
        /// <param name="customer">A customer</param>
        void UpdateCustomer(Customer customer);

        /// <summary>
        /// Adds a new customer to
        /// </summary>
        /// <param name="newCustomer"></param>
        void AddCustomer(NewCustomer newCustomer);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        bool DeleteCustomer(string code);

    }
}